/*
 * Static.h
 *
 *  Created on: 2013. 11. 15.
 *      Author: jjaehuny
 */

#ifndef PROJECTZ_NPROCESS_STATIC_H_
#define PROJECTZ_NPROCESS_STATIC_H_

#include "../NUtil/Single.h"
#include "../NUtil/Pool.h"

#include "PushSender.h"
#include "KakaoSender.h"
#include "CPISender.h"
#include "ReceiptChecker.h"

#include "Combat.h"

namespace ProjectZ { namespace NProcess {

class Static : public NUtil::Single<Static>
{
public:
	Static()
	{
		_pParamPool = new NUtil::Pool<PushSender::Param>(1024);
	}

	~Static()
	{
		delete _pParamPool;
	}

	NUtil::Pool<PushSender::Param>	*	GetParamPool() { return _pParamPool; }

public:
	PushSender &	GetPushSender() { return clsPushSender; }
	KakaoSender &	GetKakaoSender() { return clsKakaoSender; }
	CPISender &	GetCPISender() { return clsCPISender; }
	Combat &		GetCombat() { return _clsCombat; }
	ReceiptChecker &	GetReceiptChecker() { return clsReceiptChecker; }

private:
	PushSender 	clsPushSender;
	KakaoSender 	clsKakaoSender;
	CPISender		clsCPISender;
	ReceiptChecker	clsReceiptChecker;

	Combat 		_clsCombat;

	NUtil::Pool<PushSender::Param>	* _pParamPool;
};

} /*NProcess*/ } /*ProjectZ*/

#endif /* PROJECTZ_NPROCESS_STATIC_H_ */
